General Background
FIGS. 1 and 2 depict a top view of a disk 26 in a hard disk drive 20.
In the Figures, only one disk is shown; however, a disk drive typically includes multiple disks, which rotate together about a common spindle 24. Each disk 26 is coated with magnetic material for storing the digital information to be recorded. One read/write head 23 is provided for each disk surface. Each head 23 is mounted on a common actuator 22, which is moved in discrete increments to locate the head 23 on a particular disk track 27. Tracks lying nearer the spindle 24 are referred to "as "inner" tracks, while those with a larger radius located near the outer periphery of disk 26 are called "outer" tracks.
A group of disk tracks with a common radius is typically referred to as a cylinder. As an example, with a drive having one disk with two sides, each cylinder would consist of two tracks. On the other hand, a drive having six two-sided disks would include cylinders consisting of 12 tracks.
Each track is divided into sectors, with each sector storing multiple (usually 512) bytes of data. In addition, sectors may be further organized into clusters or blocks, which are groupings of a like-number of consecutive sectors (e.g., 4 sectors per cluster and 16 sectors per block). A sector is usually the smallest physically addressable storage unit of a disk drive. (The term "storage unit" is used herein to generically connote a unit of memory. A storage unit would include, for example, a sector, a cluster, or a block.) A particular sector is physically referenced by its cylinder, head and sector numbers (e.g., cylinder 0, head 0, sector 1).
The number of sectors per track is determined when the disk is formatted by a low-level formatting program. Traditionally, each track would include the same number of sectors, thereby making it simpler for a host computer via its operating system and BIOS to transfer data between itself and the disk drive. However, with such homogeneity, the byte density per unit of length decreases as track lengths increase, going from the inner (higher number) cylinders to the outer (lower number) cylinders. Thus, it is an inefficient use of cylinder space to assign each track the same number of sectors. Therefore, disk drives are now formatted so that the number of sectors per track increases as the cylinder radius increases.
To do this, a disk is usually divided into zones, with each zone having a like number of sectors per track and with the number of sectors per track changing from zone to zone and not necessarily from track to track. (Although, a zone could be defined to include only one cylinder.) This is known as zone bit recording ("ZBR"). ZBR enables systems to increase the available memory storage capacity of disk drives.
With ZBR, however, more complex disk drive accessing methods are required, because disk drive geometries (including the number of sectors per particular track) can vary from drive to drive. For this reason, computer systems utilize logical addressing, whose operability does not depend upon a particular disk drive geometry.
Disk drive space may be formatted into several distinct sections known as partitions. For example, a computer with multiple operating systems and one disk drive must allocate to each operating system a separate, dedicated "partition" of the disk drive. Typically, each partition consists of some definable group of contiguous cylinders. Due to ZBR, the number of sectors for a particular track can vary both within a single partition and between partitions. Logical addressing becomes a virtual necessity to deal with these variations. With logical addressing, a host computer (on a system level) can transfer data into and out of a logical address that corresponds to a physical storage unit for a given disk drive partition, without having to know the storage unit's actual physical address. The logical address is translated into its corresponding physical address via a logical to physical translation. The logical to physical translation is customarily performed either by the computer on a sub-system level (i.e., through the BIOS), by a dedicated disk drive controller, or (as is the case with an SCSI disk drive in connection with a DOS system) by both the computer and the disk drive controller.
With a standard logical to physical translation, the logical addresses, beginning with the lowest address, are sequentially mapped, in ascending order, onto the physical sectors of a partition, beginning with the partition's lowest physical sector (i.e., lowest cylinder, head, sector combination). For example, with a disk drive having a single partition, logical storage unit address 1 would correspond to physical address: cylinder 0, head 0, sector 1. (While some specific logical storage unit types, e.g., logical sectors, may begin with logical address 0, the generic storage units of this specification have been deemed to begin with storage unit 1. Thus, logical storage unit address 1 is the lowest logical "storage unit" address.) The order of the physical sectors from lowest to highest, progresses first through the sectors of cylinder 0, head 0, then through the sectors of cylinder 0, head 1 and so on until reaching the last sector in the last head of cylinder 0. Next would come cylinder 1, head 0, sector 1. This progression continues inward through each cylinder with the last sector of the last head of the innermost cylinder being the highest physical cylinder. It can be seen that with a standard, sequential logical to physical translation (or mapping), low logical number addresses correspond to outer physical sectors and high logical addresses correspond to high number (inner) physical sectors, as is shown in FIG. 6A. The sequential order of the logical addresses is mirrored in the corresponding sequence of physical addresses.
With operating systems such as DOS or Windows 95, when data is first transferred from a host computer to a disk drive, it is typically loaded into the lowest available logical storage unit address. Because low-level data (i.e., partition information, boot sector, FATs, directories, and operating system) is the first data to be stored on a disk drive partition (during configuration), it is stored in the low-number logical address storage units, which correspond to the outer cylinders of the partition.
The partition information is stored in the partition sector, which is the first sector of the partition. Next comes the boot sector, the FATs and the directories. After the directories comes the operating system, which constitutes most of the low-level data. After the low-level data has been loaded, the partition can start accumulating user data in response to the needs of a user. User data, which includes all data other than low-level data, is typically stored beginning at the logical storage unit immediately following the last logical storage unit utilized for storing the low-level data. Thus, the logical (and, likewise, physical) sequence and location of particular user data depends upon its relative order of storage onto the partition.
Disk Storage Optimization
Disk drive performance is normally evaluated based on several characteristics including seek time, latency, and data transfer rate. The seek time is the average time required for a read/write head to move from its current cylinder to a randomly selected cylinder; latency is the average time required for the head to move from its current sector to a selected sector; and the data transfer rate corresponds to the rate at which data is actually transferred between the disk storage device and a host computer once the head is in position at the sector or group of sectors to be accessed.
These performance characteristics are primarily affected by the physical design of the disk drive. However, it is usually not feasible for users and computer designers to enhance performance by modifying the drive's physical design or even by simply upgrading its components. It is, however, feasible to modify how data is organized and where it is physically stored on the disk drive. In fact, storage schemes have been devised to improve some of the performance characteristics for these devices.
For example, in one method, disk files are monitored during use and prioritized based upon how frequently they are (or are anticipated to be) accessed and/or modified. The files are then written or rewritten on the disk, with files having similar priority stored proximate to one another, thereby reducing seek and latency.
In another scheme, the directory sectors are physically relocated to the middle cylinder of the disk drive and the FAT sectors are physically distributed to be next to the user file sectors, which they serve. This relocation reduces the overall head seek time by reducing the expected distance required for the read/write head to move. In addition, the two FAT copies are spatially distributed to opposite sides of the track 180 degrees apart from one another. When a read process occurs, the FAT that is closest to the read/write head is utilized, which reduces the latency for FAT access from 1/2 to 1/4 of a rotation.
Unfortunately, however, while these methods reduce seek and latency times, they fail to address the rate at which data is transferred once the head is aligned with its selected sector. A user may have particular applications in which the speed of transfer of user data is important. Therefore, what is needed is a feasible disk storage scheme that improves data transfer rates for user data stored on a disk storage device.